<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let time = '2019-5-30 12:0:0'//2019年05月30日 12:00:00

        //不足十位补零
        function addZero(val) {
            val = Number(val)
            return val < 10 ? '0' + val : val

        }
        //方法一
        function foramatTime(time) {
            let t = time.split(' ')
            let n = t[0].split('-')
            let m = t[1].split(':')
            let ary = n.concat(m)
            let result = ary[0] + '年' + ary[1] + '月' + ary[2] + '日' + ' ' + addZero(ary[3]) + '时' + addZero(ary[4]) + '分' + addZero(ary[5]) + '秒'
            return result
        }
        //方法二  基于日期对象处理
        function foramatTimeTwo(time) {
            //把时间字符串变为标准日期对象
            time = time.replace('-', '/').replace('-', '/')
            time = new Date(time)
            let year = time.getFullYear()//年
            let month = addZero(time.getMonth() + 1)//月
            let day = addZero(time.getDate())//日
            let hour = addZero(time.getHours())//时
            let minutes = addZero(time.getMinutes())//分
            let seconds = addZero(time.getSeconds())//秒
            //返回想要的结果
            return year + '年' + month + '月' + day + '日' + ' ' + hour + ':' + minutes + ':' + seconds
        }

        //方法三
        String.prototype.formatTime = function formatTime(template) { //在String原型上扩展一个方法formatTime
            //初始化模板
            typeof template === 'undefined' ? template = "{0}年{1}月{2}日 {3}:{4}:{5}" : null
            //this 要处理的字符串
            //获取日期字符串中的数字信息
            let matchAry = this.match(/\d+/g)
            //模板和数据的渲染(引擎机制)
            template = template.replace(/\{(\d+)\}/g, function (x, y) {
                let val = matchAry[y] || '00'
                val.length < 2 ? val = '0' + val : null
                return val
            })
            return template

        }
        console.log(time.formatTime("{1}-{2} {3}:{4}"));


    </script>
</body>

</html>